package ioc.factory;

import ioc.Agent;
import ioc.AgentFinder;
import ioc.SpreadsheetAgentFinder;

import java.util.ArrayList;
import java.util.List;

public class HollywoodServiceWithFactory {

    /**
     * 没有硬编码，注入agentFinderType即可
     * 问题1 注入的是类型，而不是实现AgentFinder的对象。
     * 问题2 依然还有获取依赖项的代码，没有达到只需关注本身业务的理想状态
     * @param agentFinderType
     * @return
     */
    public static List<Agent> getFriendlyAgents(String agentFinderType) {
        AgentFinderFactory factory = AgentFinderFactory.getInstance();
        AgentFinder agentFinder = factory.getAgentFinder(agentFinderType);
        List<Agent> agents = agentFinder.findAllAgents();
        return filterAgents(agents, "java");
    }

    private static List<Agent> filterAgents(List<Agent> agents, String java) {
        List<Agent> list = new ArrayList<>();
        for (Agent agent : agents) {
            if (agent.getType().equals(java)) {
                list.add(agent);
            }
        }
        return list;
    }


}
